Apex Unit Test হলো Apex কোডের নির্দিষ্ট অংশের কার্যকারিতা যাচাই করার একটি পদ্ধতি, যা প্রোগ্রামের নির্দিষ্ট লজিক বা ফাংশনালিটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করে। Salesforce-এ Unit Test তৈরি করা বাধ্যতামূলক এবং এটি প্রোডাকশন ডিপ্লয়মেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Apex Unit Test-এর মাধ্যমে কোডের নির্দিষ্ট অংশে কৃত্রিম ইনপুট দিয়ে আউটপুট যাচাই করা হয় এবং নিশ্চিত করা হয় যে কোডটি সঠিকভাবে কাজ করছে। এতে Test Class এবং Test Method ব্যবহার করা হয়, যা @isTest
অ্যানোটেশন দিয়ে চিহ্নিত করা হয়।
বাগ সনাক্তকরণ ও সমাধান: Unit Test চালানোর মাধ্যমে কোডে কোনো বাগ বা ত্রুটি থাকলে তা দ্রুত সনাক্ত করা যায় এবং সমাধান করা সহজ হয়।
কোডের সঠিকতা নিশ্চিতকরণ: Unit Test কোডের প্রত্যাশিত আউটপুট যাচাই করে এবং নিশ্চিত করে যে কোডটি সঠিকভাবে কাজ করছে।
ডিপ্লয়মেন্টের পূর্ব প্রস্তুতি: Salesforce প্রোডাকশন ডিপ্লয়মেন্টের জন্য কমপক্ষে ৭৫% কোড কভারেজ থাকা বাধ্যতামূলক, যা Unit Test-এর মাধ্যমে অর্জন করা যায়।
পরিবর্তনের সময় কোডের স্থায়িত্ব: যখন কোডে কোনো পরিবর্তন করা হয় বা নতুন ফিচার যোগ করা হয়, তখন Unit Test চালিয়ে নিশ্চিত করা যায় যে কোড পরিবর্তনের ফলে কোনো বিদ্যমান কার্যক্ষমতায় সমস্যা হচ্ছে না।
গভর্নর লিমিট টেস্টিং: Salesforce গভর্নর লিমিট মেনে চলতে Unit Test গুরুত্বপূর্ণ, কারণ এটি লিমিটের মধ্যে কোড সঠিকভাবে কাজ করছে কিনা যাচাই করে।
Apex Unit Test ক্লাস এবং মেথডে সাধারণত @isTest
অ্যানোটেশন ব্যবহার করা হয়। Unit Test মেথডে টেস্ট ডেটা তৈরি, পরীক্ষিত মেথড কল করা এবং System.assertEquals()
ব্যবহার করে ফলাফল যাচাই করা হয়।
@isTest
public class AccountHandlerTest {
// Test Method
@isTest
static void testUpdateAccountIndustry() {
// টেস্ট ডেটা তৈরি
Account acc = new Account(Name = 'Tech Solutions', Industry = 'Healthcare');
insert acc;
// পরীক্ষিত মেথড কল
AccountHandler.updateAccountIndustry(acc.Id, 'Technology');
// প্রত্যাশিত ফলাফল যাচাই
Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
System.assertEquals('Technology', updatedAcc.Industry, 'Industry field did not update correctly');
}
}
AccountHandler.updateAccountIndustry()
মেথডের কার্যকারিতা যাচাই করা হয়েছে।Test Class এবং Method: Unit Test ক্লাস এবং মেথডকে @isTest
অ্যানোটেশন দিয়ে চিহ্নিত করতে হয়।
Test Data Creation: Unit Test চালানোর জন্য নতুন ডেটা তৈরি করা হয়, যা মূল ডেটাবেসে কোনো পরিবর্তন আনে না। Salesforce-এ Unit Test চলাকালীন Test Data তৈরি করতে SeeAllData=false
ব্যবহার করা হয়।
System.assert() Methods: System.assertEquals()
বা System.assertNotEquals()
ব্যবহার করে প্রত্যাশিত এবং প্রাপ্ত আউটপুট তুলনা করা হয়।
Test.startTest() এবং Test.stopTest(): Unit Test-এর ক্ষেত্রে গভর্নর লিমিট রিসেট এবং Async অপারেশন চালানোর জন্য Test.startTest()
এবং Test.stopTest()
ব্যবহৃত হয়।
নিচের উদাহরণে ContactHandler
ক্লাসে updateContactEmail
মেথড টেস্ট করা হয়েছে, যা কন্টাক্টের ইমেইল আপডেট করে।
@isTest
public class ContactHandlerTest {
@isTest
static void testUpdateContactEmail() {
// Test Data তৈরি
Contact con = new Contact(FirstName = 'John', LastName = 'Doe', Email = 'john.doe@example.com');
insert con;
// মেথড টেস্ট করা হচ্ছে
ContactHandler.updateContactEmail(con.Id, 'john.new@example.com');
// আউটপুট যাচাই করা হচ্ছে
Contact updatedCon = [SELECT Email FROM Contact WHERE Id = :con.Id];
System.assertEquals('john.new@example.com', updatedCon.Email, 'Email did not update correctly');
}
}
ContactHandler.updateContactEmail()
মেথডের কার্যক্ষমতা যাচাই করা হয়েছে।SeeAllData=false: Unit Test-এর ক্ষেত্রে SeeAllData=false
ব্যবহার করে নিশ্চিত করা উচিত যে, Test Data মূল ডেটাবেসে কোনো প্রভাব ফেলছে না।
Test Coverage নিশ্চিত করুন: Production ডিপ্লয়মেন্টের জন্য কমপক্ষে ৭৫% কোড কভারেজ থাকা বাধ্যতামূলক। তাই Unit Test তৈরি করে সর্বোচ্চ কোড কভারেজ নিশ্চিত করা উচিত।
System.assert ব্যবহার করুন: প্রত্যাশিত এবং প্রাপ্ত ফলাফল যাচাই করতে System.assert()
ব্যবহার করুন, যাতে Unit Test সঠিক আউটপুট যাচাই করতে পারে।
Exception Handling টেস্ট করুন: Exception Handling-এর ক্ষেত্রে নিশ্চিত হন যে Unit Test এর মাধ্যমে Exception সঠিকভাবে হ্যান্ডেল হচ্ছে।
গভর্নর লিমিটের মধ্যে টেস্টিং: গভর্নর লিমিটের সীমার মধ্যে কোড সঠিকভাবে কাজ করছে কিনা যাচাই করতে Test.startTest() এবং Test.stopTest() ব্যবহার করুন।
Apex Unit Test ব্যবহার করে উন্নয়নকারীরা Salesforce অ্যাপ্লিকেশনকে আরও কার্যকর ও স্থিতিশীল করতে পারেন এবং Production ডিপ্লয়মেন্টের সময় নিরাপত্তা ও নির্ভরযোগ্যতা নিশ্চিত করতে পারেন।
common.read_more